package com.jt.controller;/**
 * @Author 金帮嘉诚 @Date 2021-08-06 星期五 9:41
 */
/*本类用于测试*/

import com.jt.pojo.ItemCat;
import com.jt.service.ItemCatService;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 知识点
 * <p>
 * 商品分类控制
 */
@RestController
@CrossOrigin
@RequestMapping("/itemCat")
public class ItemCatController {
    @Autowired
    private ItemCatService itemCatService;

    /**
     * 需求:查询3级商品分类信息
     * URL:
     * 请求方式:
     * 参数:level查询的层级
     * 返回值:SysResult对象(List<ItemCat>)
     */
    @GetMapping("/findItemCatList/{level}")
    public SysResult findItemCatList(@PathVariable Integer level) {
        List<ItemCat> itemCatList = itemCatService.findItemCatList(level);

        return SysResult.success(itemCatList);
//        List<ItemCat> itemCatList = itemCatService.findItemCatList(level);
//        return SysResult.success(itemCatList);
    }

    /**
     * 修改商品分类状态
     * 注：restFul风格 各种请求方式写法都相同 参数为对象时不用写注解 参数为数据类型时需要@PathVariable注解
     * 不是restFul风格时，put 和 post请求方式才需要写@RequestBody注解
     */
    @PutMapping("/status/{id}/{status}")
    public SysResult updateStatus(ItemCat itemCat) {
        Integer updateStatus = itemCatService.updateStatus(itemCat);
        if (updateStatus == 1) {
            return SysResult.success(updateStatus);
        }
        return SysResult.fail();
    }

    /**
     * 新增 商品分类
     * 传入了 分类名 父id level
     */
    @PostMapping("/saveItemCat")
    public SysResult saveItemCat(@RequestBody ItemCat itemCat) {
        Integer saveItemCat = itemCatService.saveItemCat(itemCat);
        if (saveItemCat == 1) {
            return SysResult.success(saveItemCat);
        }
        return SysResult.fail();
    }

    /**
     * 修改 商品分类
     */
    @PutMapping("/updateItemCat")
    public SysResult updateItemCat(@RequestBody ItemCat itemCat) {
        Integer updateItemCat = itemCatService.updateItemCat(itemCat);
        if (updateItemCat == 1) {
            return SysResult.success(updateItemCat);
        }
        return SysResult.fail();
    }

    /**
     * 删除 商品分类
     * 要求删除指定商品分类 以及所有子孙分类
     * 参数 id level
     */
    @DeleteMapping("/deleteItemCat")
    //接受两个参数 写业务时不容易忘记
    public SysResult deleteItemCat(Integer id, Integer level) {
        Integer deleteItemCat = itemCatService.deleteItemCat(id, level);
        if (deleteItemCat >= 1) {
            return SysResult.success(deleteItemCat);
        }
        return SysResult.fail();
    }

}
